<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>index</title>
</head>
<body>
<script>
  /*
  * JS中没有完全意义的私有化 本质上是约定大于配置的思想
  *
  *  我们一般而言根据约定将_开头的变量当做私有变量外部虽然可以访问到，但是我们一般不会这样去访问
  *
  * 而采用一个getter函数向外界暴露这个变量
  *
  * 如果是一个受保护的变量的话,也就是外界只能访问不能修改的变量那么我们只提供getter不提供setter即可
  *
  * */

  class User{
    constructor() {
      this._age = 'A'
    }

    /*
    * setter/getter特殊的地方就在于它既是一个属性也是一个函数
    * 所以  get age 一方面age属性是在对象身上定义的,另一方面作为函数 get age整体会在原型上定义
    * */



    get age(){
      return this._age
    }
  }

  console.log(new User());

  console.dir(Object.getPrototypeOf(new User()));







</script>
</body>
</html>